#include "uart.h"
#include "main.h"



void Uart_Init(uint32_t baud)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	UART_InitTypeDef UART_InitStructure;
	
	GPIO_StructInit(&GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;				//TX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_ODrv = GPIO_ODrv_NORMAL;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

	GPIO_StructInit(&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_13; 			//RX
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_ODrv  = GPIO_ODrv_NORMAL;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	GPIO_PinAFConfig(GPIOB, GPIO_Pin_12 , PB12_TXD2);
	GPIO_PinAFConfig(GPIOB, GPIO_Pin_13 , PB13_RXD2);

   UART_ClockOnOff(UART2, SH_ON);

   UART_InitStructure.UART_Mode       = UART_Mode_1;
   UART_InitStructure.UART_BaudRate   = baud;
   UART_InitStructure.UART_StopBits   = UART_StopBits_1;
   UART_InitStructure.UART_Parity = UART_SoftWare_Custom;
   UART_InitStructure.UART_Enable = UART_Enable_Tx | UART_Enable_Rx;
   UART_Init(UART2, &UART_InitStructure);
}

int fputc(int ch, FILE *f)
{
   while (UART2->FR.BIT.TI == 0)
   {
      __nop();
   }
   UART2->TDR.BIT.TDR = ch;

   return ch;
}

